#ifndef TEXTURE_H
#define TEXTURE_H

/////////
//Image//
/////////
class Image 
{
  public:
  Image();
  ~Image();
  unsigned long sizeX;
  unsigned long sizeY;
  unsigned char *data;
  unsigned int format;
};

///////////////
//ImageLoader//
///////////////
class ImageLoader
{
  public:
  ImageLoader(){};
  ~ImageLoader(){};
  static int loadBMP(const char *file, Image *image);//OK:1 KO:0
  static void loadJPEG(const char *fichier, Image *image);
  static void loadPNG(const char *fichier, Image *img);
  static int loadTGA(const char *fichier, Image *img);
};

///////////
//Texture//
///////////

class Texture
{
  public:
  Texture(const char * file);
  Texture(Image *image);
  ~Texture();
  
  void loadTexture();
  Image* getImage();
  
  //le mode de plaquage
  // -> GL_MODULATE
  // ->GL_REPLACE
  // ->GL_BLEND
  // ->GL_DECAL
  void setModePlaquage(int mode);
  int getModePlaquage();

  protected:
  Image *_image;//tableau de pixel de la texture
  unsigned int _textureNumber;
  int _mode;
  static unsigned int _compteur;//compte le nombre de textures creees
  static unsigned int  *_textureTabId;//tableaux qui va contenir l'ensemble des Id de Texture
                                      //à allouer à la création de chaque nouvelle texture;
  static const unsigned int _nbMaxTexture;//nb max de texture à gérer
  static bool _init;
};
#endif
